package com.example.dw.admin.service;

import com.example.dw.admin.dto.CreateCourseDTO;
import com.example.dw.admin.dto.PageRequestDTO;
import com.example.dw.admin.dto.UpdateCourseDTO;
import com.example.dw.entity.Course;
import com.example.dw.vo.UserVO;

import java.util.List;
import java.util.Map;

/**
 * 管理端课程服务接口
 * @author system
 * @since 2024-01-01
 */
public interface AdminCourseService {

    /**
     * 获取部分课程信息
     * @param count 数量
     * @return 课程列表
     */
    List<Course> getSomeCourses(Integer count);

    /**
     * 根据学校ID获取课程
     * @param schoolId 学校ID
     * @return 课程列表
     */
    List<Course> getCoursesBySchool(Integer schoolId);

    /**
     * 获取所有课程信息
     * @return 课程列表
     */
    List<Course> getAllCourses();

    /**
     * 分页获取课程列表
     * @param pageRequest 分页请求
     * @return 分页结果
     */
    Map<String, Object> getCoursesByPage(PageRequestDTO pageRequest);

    /**
     * 获取课程详情
     * @param courseid 课程ID
     * @return 课程信息
     */
    Course getCourseById(Integer courseid);

    /**
     * 创建课程
     * @param createCourseDTO 创建课程请求
     * @return 创建结果
     */
    void createCourse(CreateCourseDTO createCourseDTO);

    /**
     * 更新课程信息
     * @param updateCourseDTO 更新课程请求
     * @return 更新结果
     */
    void updateCourse(UpdateCourseDTO updateCourseDTO);

    /**
     * 删除课程
     * @param courseid 课程ID
     * @return 删除结果
     */
    void deleteCourse(Integer courseid);

    /**
     * 获取全部教师
     * @return 教师列表
     */
    List<UserVO> getAllTeachers();
} 